package edu.umbc.bluebarracudas;

import android.graphics.Canvas;



/**

 * Provides a simple abstraction for obtaining preview captures from a camera

 * on the Android platform. This interface intended to be used temporarily while

 * the Google Android SDK fails to support camera capture from desktop devices

 * (webcams etc).

 * 

 * @author Tom Gibara

 */



public interface CameraSource {



	static final String LOG_TAG = "camera";

	

	/**

	 * Open the camera source for subsequent use via calls to capture().

	 * 

	 * @return true if the camera source was successfully opened.

	 */

	

	boolean open();

	

	/**

	 * Close the camera source. Calling close on a closed CameraSource is

	 * permitted but has no effect. The camera source may be reopened after

	 * being closed.

	 */

	

	void close();

	

	/**

	 * The width of the captured image.

	 * 

	 * @return the width of the capture in pixels

	 */

	

	int getWidth();

	

	/**

	 * The height of the captured image.

	 * 

	 * @return the height of the capture in pixels

	 */

	

	int getHeight();

	

	/**

	 * Attempts to render the current camera view onto the supplied canvas.

	 * The capture will be rendered into the rectangle (0,0,width,height).

	 * Outstanding transformations on the canvas may alter this.

	 * 

	 * @param canvas the canvas to which the captured pixel data will be written

	 * @return true iff a frame was successfully written to the canvas

	 */

	

	boolean capture(Canvas canvas);

	

}

